package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 版本1--封装
 * Mysql工具类
 * 1.数据库：地址、用户名、密码   私有属性--静态化【本类直接调用】
 * Oracle与Mysql同时具备--地址、用户名、密码
 * 2.静态方法【本类直接调用】 getParam(String 外置文件路径)
 * 目的：使用方法调用外部文件  db_mysql.properties
 * db_mysql.properties 对应 Java Properties类：读取键值对形式信息
 * Properties类  提供方法   load()   读取配置文件信息【键值对-数据库基本信息】
 *
 *3.通过封装概念--连接成功数据库【通用一个类链接Mysql和Oracle】
 */
public class Mysql {
    //1.任何数据库具备：地址、用户名、密码---属性
    private static String url;
    private static String username;
    private static String password;
    //2.静态方法：getParam(String 路径)--链接数据库--读取信息
    //2.1配置文件：键值对出现，保存数据库对应的基本信息 xxx.properties
    public static void getParam(String fileName) throws IOException {
    //2.2Properties类--读取xxx.properties配置文件
        Properties p=new Properties();
    //2.3外置文件读取---借助IO---搬运数据---InputStream
    //Mysql.class   表示当前Mysql类的Class对象
    //理解：图书馆--区域Mysql相关书籍
    //getClassLoader  获取当前类的加载器【加载器负责读取配置文件信息】
    //理解：图书馆--区域Mysql相关书籍---图书管理员
    //getResourceAsStream(文件)  获取当前加载器中键值对信息
    //理解：图书馆--区域Mysql相关书籍---图书管理员 ---找明确的书籍
        InputStream fis=
          Mysql.class.getClassLoader().getResourceAsStream(fileName);
        p.load(fis);
    //2.4读取数据库基本信息【ul、用户、密码】赋值给当前对象【url、对象、密码】
    //Properties类--提供方法getProperty()读取db_mysql.properties中键
        url=p.getProperty("url");
        username=p.getProperty("username");
        password=p.getProperty("password");
        System.out.println("测试连接成功："+url+username+password);
    }


    public static void main(String[] args) throws IOException, SQLException {
//        测试封装概念--连接成功数据库
        Mysql.getParam("db_mysql.properties");
//        参考Mysql封装，写Oracle封装
//        连接成功Mysql--book表--增加一条记录操作
//        1.创建连接--Connection 代表Java连接成功数据库
        Connection con= DriverManager.getConnection(url,username,password);
//        2.执行SQL--Statement 代表Java执行数据 SQL
        Statement st=con.createStatement();
//        3.【CRUD操作：增删改 executeUpdate()  查 executeQuery()】
        /*作业3增删改查*/
        /*增*/
 //        String sql="insert into book values(6,'余华','活着',79,'2010年',80,'否')";
         //删改查 【改sql】 --查--------------------------------------------------------------
        /*删*/
//     String sql="delete from book where id=2";
        /*改*/
        String sql="update book set price=888 where id=1";
        String J="select * from book";
        int rows=st.executeUpdate(sql);//执行增删改，返回值 int类型
        ResultSet rs=st.executeQuery(J);
        System.out.println("成功添加了："+rows+"一条记录");
        /*查*/
        while (rs.next()){
            int id=rs.getInt("id");
            String author=rs.getString("author");
            String name=rs.getString("name");
            int price=rs.getInt("price");
            String date=rs.getString("date");
            int number=rs.getInt("number");
            String discount= rs.getString("discount");
            System.out.println("作者："+author+"打折情况"+discount);
        }
//        4.关闭连接--Statement--Connection

        st.close();
        con.close();
    }
}

